package com.ctshk.rpc.tour.dto.schedule;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.ctshk.rpc.tour.req.CollectionPlaceJson;
import com.ctshk.rpc.tour.req.TourThemeJson;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
@ApiModel("旅行团基础信息DTO")
public class SeriesTripScheduleBasicDTO implements Serializable {
	private static final long serialVersionUID = 1L;

	@ApiModelProperty(value = "团号")
    private String tripNumber;

    @ApiModelProperty(value = "团号排序代码字段")
    private String sortKey;

    @ApiModelProperty(value = "团期状态(1:未成团 2：已成团 3：停售 4：保留 5：不成团 6：已完团)")
    private Integer scheduleStatus;

    @ApiModelProperty(value = "上一次团期状态")
    private Integer lastStatus;

    @ApiModelProperty(value = "成本分摊模板类型")
    private Integer costSharingType;

    @ApiModelProperty(value = "所属行程")
    private Long tripId;

    @ApiModelProperty(value = "出境类型")
    private Integer departType;

    @ApiModelProperty(value = "已收客人数")
    private Integer lockedTouristNum;

    @ApiModelProperty(value = "旅游组别主数据ID")
    private Long tourTypeId;

    @ApiModelProperty(value = "旅游组别名称")
    private String tourTypeName;

    @ApiModelProperty(value = "旅行团种类主数据ID")
    private Long groupTypeId;

    @ApiModelProperty(value = "旅行团种类名称")
    private String groupTypeName;

    @ApiModelProperty(value = "团队性质主数据ID")
    private Long groupNatureId;

    @ApiModelProperty(value = "团队性质名称")
    private String groupNatureName;

    @TableField(typeHandler = FastjsonTypeHandler.class)
    @ApiModelProperty(value = "旅行团主题JSON")
    private List<TourThemeJson> tourThemeJson;

    @ApiModelProperty(value = "目的地主数据ID")
    private Long destinationId;

    @ApiModelProperty(value = "目的地")
    private String destination;

    @ApiModelProperty(value = "出发地主数据ID")
    private Long departurePlaceId;

    @ApiModelProperty(value = "出发地")
    private String departurePlace;

    @ApiModelProperty(value = "出发日期")
    private LocalDate departureDate;

    @ApiModelProperty(value = "回程日期")
    private LocalDate backDate;

    @ApiModelProperty(value = "出行天数")
    private Integer travelDays;

    @ApiModelProperty(value = "含几晚")
    private Integer nightDays;

    @TableField(exist = false)
    @ApiModelProperty(value = "集合地点String")
    private String collectionPlaceJsons;

    @TableField(exist = false)
    @ApiModelProperty(value = "解散地区String")
    private String dissolutionAreaJsons;

    @TableField(typeHandler = FastjsonTypeHandler.class)
    @ApiModelProperty(value = "集合地点JSON")
    private List<CollectionPlaceJson> collectionPlaceJson;

    @TableField(typeHandler = FastjsonTypeHandler.class)
    @ApiModelProperty(value = "解散地区JSON")
    private List<CollectionPlaceJson> dissolutionAreaJson;

    @ApiModelProperty(value = "去程咨询航班")
    private String departureConsulation;

    @ApiModelProperty(value = "去程出发时间类型")
    private Integer departureTimeType;

    @ApiModelProperty(value = "去程时间")
    private LocalTime departureTime;

    @ApiModelProperty(value = "去程到达时间类型")
    private Integer goArriveDateType;

    @ApiModelProperty(value = "去程到达时间")
    private LocalTime goArriveTime;

    @ApiModelProperty(value = "去程交通类型主数据ID")
    private Long departureTrafficTypeId;

    @ApiModelProperty(value = "去程交通类型")
    private String departureTrafficType;

    @ApiModelProperty(value = "返程咨询")
    private String returnConsulation;

    @ApiModelProperty(value = "返程时间")
    private LocalTime returnTime;

    @ApiModelProperty(value = "返程时间类型")
    private Integer returnTimeType;

    @ApiModelProperty(value = "返程达到时间类型")
    private Integer returnArriveDateType;

    @ApiModelProperty(value = "返程到达时间")
    private LocalTime returnArriveTime;

    @ApiModelProperty(value = "返程交通类型主数据ID")
    private Long returnTrafficTypeId;

    @ApiModelProperty(value = "返程交通类型")
    private String returnTrafficType;

    @ApiModelProperty(value = "负责人ID")
    private Long chargePersonId;

    @ApiModelProperty(value = "负责人员工号")
    private String chargePersonNumber;

    @ApiModelProperty(value = "负责人姓名")
    private String chargePersonName;

    @ApiModelProperty(value = "OP的ID")
    private Long opId;

    @ApiModelProperty(value = "OP的员工号")
    private String opNumber;

    @ApiModelProperty(value = "OP姓名")
    private String opName;

    @ApiModelProperty(value = "是否需要保险")
    private Integer needInsurance;

    @ApiModelProperty(value = "是否需要签证")
    private Integer needVisa;

    @ApiModelProperty(value = "内部摘要")
    private String internalSummary;

    @ApiModelProperty(value = "顾客须知")
    private String customerRights;

    @ApiModelProperty(value = "门市摘要")
    private String shopSummary;

    @ApiModelProperty(value = "创建人")
    private Long createId;

    @ApiModelProperty(value = "修改人")
    private Long modifiedId;

    @ApiModelProperty(value = "删除标识")
    private Integer isDeleted;

    @ApiModelProperty(value = "自营权限类型")
    private Integer selfSalePermissionType;

    @ApiModelProperty(value = "代理商权限类型")
    private Integer agentSalePermissionType;

    @ApiModelProperty(value = "出发日期（周几）")
    private Integer departureDayOfWeek;
}
